(0) Obligation:

Runtime Complexity Relative TRS:
The TRS R consists of the following rules:

minsort(Cons(x, xs)) → appmin(x, xs, Cons(x, xs))
minsort(Nil) → Nil
appmin(min, Cons(x, xs), xs') → appmin[Ite][True][Ite](<(x, min), min, Cons(x, xs), xs')
appmin(min, Nil, xs) → Cons(min, minsort(remove(min, xs)))
notEmpty(Cons(x, xs)) → True
notEmpty(Nil) → False
remove(x', Cons(x, xs)) → remove[Ite](!EQ(x', x), x', Cons(x, xs))

The (relative) TRS S consists of the following rules:

!EQ(S(x), S(y)) → !EQ(x, y)
!EQ(0, S(y)) → False
!EQ(S(x), 0) → False
!EQ(0, 0) → True
<(S(x), S(y)) → <(x, y)
<(0, S(y)) → True
<(x, 0) → False
remove[Ite](False, x', Cons(x, xs)) → Cons(x, remove(x', xs))
appmin[Ite][True][Ite](True, min, Cons(x, xs), xs') → appmin(x, xs, xs')
remove[Ite](True, x', Cons(x, xs)) → xs
appmin[Ite][True][Ite](False, min, Cons(x, xs), xs') → appmin(min, xs, xs')

Rewrite Strategy: INNERMOST

(1) RenamingProof (EQUIVALENT transformation)

Renamed function symbols to avoid clashes with predefined symbol.

(2) Obligation:

Runtime Complexity Relative TRS:
The TRS R consists of the following rules:

minsort(Cons(x, xs)) → appmin(x, xs, Cons(x, xs))
minsort(Nil) → Nil
appmin(min, Cons(x, xs), xs') → appmin[Ite][True][Ite](<(x, min), min, Cons(x, xs), xs')
appmin(min, Nil, xs) → Cons(min, minsort(remove(min, xs)))
notEmpty(Cons(x, xs)) → True
notEmpty(Nil) → False
remove(x', Cons(x, xs)) → remove[Ite](!EQ(x', x), x', Cons(x, xs))

The (relative) TRS S consists of the following rules:

!EQ(S(x), S(y)) → !EQ(x, y)
!EQ(0', S(y)) → False
!EQ(S(x), 0') → False
!EQ(0', 0') → True
<(S(x), S(y)) → <(x, y)
<(0', S(y)) → True
<(x, 0') → False
remove[Ite](False, x', Cons(x, xs)) → Cons(x, remove(x', xs))
appmin[Ite][True][Ite](True, min, Cons(x, xs), xs') → appmin(x, xs, xs')
remove[Ite](True, x', Cons(x, xs)) → xs
appmin[Ite][True][Ite](False, min, Cons(x, xs), xs') → appmin(min, xs, xs')

Rewrite Strategy: INNERMOST

(3) TypeInferenceProof (BOTH BOUNDS(ID, ID) transformation)

Infered types.

(4) Obligation:

Innermost TRS:
Rules:
minsort(Cons(x, xs)) → appmin(x, xs, Cons(x, xs))
minsort(Nil) → Nil
appmin(min, Cons(x, xs), xs') → appmin[Ite][True][Ite](<(x, min), min, Cons(x, xs), xs')
appmin(min, Nil, xs) → Cons(min, minsort(remove(min, xs)))
notEmpty(Cons(x, xs)) → True
notEmpty(Nil) → False
remove(x', Cons(x, xs)) → remove[Ite](!EQ(x', x), x', Cons(x, xs))
!EQ(S(x), S(y)) → !EQ(x, y)
!EQ(0', S(y)) → False
!EQ(S(x), 0') → False
!EQ(0', 0') → True
<(S(x), S(y)) → <(x, y)
<(0', S(y)) → True
<(x, 0') → False
remove[Ite](False, x', Cons(x, xs)) → Cons(x, remove(x', xs))
appmin[Ite][True][Ite](True, min, Cons(x, xs), xs') → appmin(x, xs, xs')
remove[Ite](True, x', Cons(x, xs)) → xs
appmin[Ite][True][Ite](False, min, Cons(x, xs), xs') → appmin(min, xs, xs')

Types:
minsort :: Cons:Nil → Cons:Nil
Cons :: S:0' → Cons:Nil → Cons:Nil
appmin :: S:0' → Cons:Nil → Cons:Nil → Cons:Nil
Nil :: Cons:Nil
appmin[Ite][True][Ite] :: True:False → S:0' → Cons:Nil → Cons:Nil → Cons:Nil
< :: S:0' → S:0' → True:False
remove :: S:0' → Cons:Nil → Cons:Nil
notEmpty :: Cons:Nil → True:False
True :: True:False
False :: True:False
remove[Ite] :: True:False → S:0' → Cons:Nil → Cons:Nil
!EQ :: S:0' → S:0' → True:False
S :: S:0' → S:0'
0' :: S:0'
hole_Cons:Nil1_0 :: Cons:Nil
hole_S:0'2_0 :: S:0'
hole_True:False3_0 :: True:False
gen_Cons:Nil4_0 :: Nat → Cons:Nil
gen_S:0'5_0 :: Nat → S:0'

(5) OrderProof (LOWER BOUND(ID) transformation)

Heuristically decided to analyse the following defined symbols:
minsort, appmin, <, remove, !EQ

They will be analysed ascendingly in the following order:
minsort = appmin
< < appmin
remove < appmin
!EQ < remove

(6) Obligation:

Innermost TRS:
Rules:
minsort(Cons(x, xs)) → appmin(x, xs, Cons(x, xs))
minsort(Nil) → Nil
appmin(min, Cons(x, xs), xs') → appmin[Ite][True][Ite](<(x, min), min, Cons(x, xs), xs')
appmin(min, Nil, xs) → Cons(min, minsort(remove(min, xs)))
notEmpty(Cons(x, xs)) → True
notEmpty(Nil) → False
remove(x', Cons(x, xs)) → remove[Ite](!EQ(x', x), x', Cons(x, xs))
!EQ(S(x), S(y)) → !EQ(x, y)
!EQ(0', S(y)) → False
!EQ(S(x), 0') → False
!EQ(0', 0') → True
<(S(x), S(y)) → <(x, y)
<(0', S(y)) → True
<(x, 0') → False
remove[Ite](False, x', Cons(x, xs)) → Cons(x, remove(x', xs))
appmin[Ite][True][Ite](True, min, Cons(x, xs), xs') → appmin(x, xs, xs')
remove[Ite](True, x', Cons(x, xs)) → xs
appmin[Ite][True][Ite](False, min, Cons(x, xs), xs') → appmin(min, xs, xs')

Types:
minsort :: Cons:Nil → Cons:Nil
Cons :: S:0' → Cons:Nil → Cons:Nil
appmin :: S:0' → Cons:Nil → Cons:Nil → Cons:Nil
Nil :: Cons:Nil
appmin[Ite][True][Ite] :: True:False → S:0' → Cons:Nil → Cons:Nil → Cons:Nil
< :: S:0' → S:0' → True:False
remove :: S:0' → Cons:Nil → Cons:Nil
notEmpty :: Cons:Nil → True:False
True :: True:False
False :: True:False
remove[Ite] :: True:False → S:0' → Cons:Nil → Cons:Nil
!EQ :: S:0' → S:0' → True:False
S :: S:0' → S:0'
0' :: S:0'
hole_Cons:Nil1_0 :: Cons:Nil
hole_S:0'2_0 :: S:0'
hole_True:False3_0 :: True:False
gen_Cons:Nil4_0 :: Nat → Cons:Nil
gen_S:0'5_0 :: Nat → S:0'

Generator Equations:
gen_Cons:Nil4_0(0) ⇔ Nil
gen_Cons:Nil4_0(+(x, 1)) ⇔ Cons(0', gen_Cons:Nil4_0(x))
gen_S:0'5_0(0) ⇔ 0'
gen_S:0'5_0(+(x, 1)) ⇔ S(gen_S:0'5_0(x))

The following defined symbols remain to be analysed:
<, minsort, appmin, remove, !EQ

They will be analysed ascendingly in the following order:
minsort = appmin
< < appmin
remove < appmin
!EQ < remove

(7) RewriteLemmaProof (LOWER BOUND(ID) transformation)

Proved the following rewrite lemma:
<(gen_S:0'5_0(n7_0), gen_S:0'5_0(+(1, n7_0))) → True, rt ∈ Ω(0)

Induction Base:
<(gen_S:0'5_0(0), gen_S:0'5_0(+(1, 0))) →RΩ(0)
True

Induction Step:
<(gen_S:0'5_0(+(n7_0, 1)), gen_S:0'5_0(+(1, +(n7_0, 1)))) →RΩ(0)
<(gen_S:0'5_0(n7_0), gen_S:0'5_0(+(1, n7_0))) →IH
True

We have rt ∈ Ω(1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n0).

(8) Complex Obligation (BEST)

(9) Obligation:

Innermost TRS:
Rules:
minsort(Cons(x, xs)) → appmin(x, xs, Cons(x, xs))
minsort(Nil) → Nil
appmin(min, Cons(x, xs), xs') → appmin[Ite][True][Ite](<(x, min), min, Cons(x, xs), xs')
appmin(min, Nil, xs) → Cons(min, minsort(remove(min, xs)))
notEmpty(Cons(x, xs)) → True
notEmpty(Nil) → False
remove(x', Cons(x, xs)) → remove[Ite](!EQ(x', x), x', Cons(x, xs))
!EQ(S(x), S(y)) → !EQ(x, y)
!EQ(0', S(y)) → False
!EQ(S(x), 0') → False
!EQ(0', 0') → True
<(S(x), S(y)) → <(x, y)
<(0', S(y)) → True
<(x, 0') → False
remove[Ite](False, x', Cons(x, xs)) → Cons(x, remove(x', xs))
appmin[Ite][True][Ite](True, min, Cons(x, xs), xs') → appmin(x, xs, xs')
remove[Ite](True, x', Cons(x, xs)) → xs
appmin[Ite][True][Ite](False, min, Cons(x, xs), xs') → appmin(min, xs, xs')

Types:
minsort :: Cons:Nil → Cons:Nil
Cons :: S:0' → Cons:Nil → Cons:Nil
appmin :: S:0' → Cons:Nil → Cons:Nil → Cons:Nil
Nil :: Cons:Nil
appmin[Ite][True][Ite] :: True:False → S:0' → Cons:Nil → Cons:Nil → Cons:Nil
< :: S:0' → S:0' → True:False
remove :: S:0' → Cons:Nil → Cons:Nil
notEmpty :: Cons:Nil → True:False
True :: True:False
False :: True:False
remove[Ite] :: True:False → S:0' → Cons:Nil → Cons:Nil
!EQ :: S:0' → S:0' → True:False
S :: S:0' → S:0'
0' :: S:0'
hole_Cons:Nil1_0 :: Cons:Nil
hole_S:0'2_0 :: S:0'
hole_True:False3_0 :: True:False
gen_Cons:Nil4_0 :: Nat → Cons:Nil
gen_S:0'5_0 :: Nat → S:0'

Lemmas:
<(gen_S:0'5_0(n7_0), gen_S:0'5_0(+(1, n7_0))) → True, rt ∈ Ω(0)

Generator Equations:
gen_Cons:Nil4_0(0) ⇔ Nil
gen_Cons:Nil4_0(+(x, 1)) ⇔ Cons(0', gen_Cons:Nil4_0(x))
gen_S:0'5_0(0) ⇔ 0'
gen_S:0'5_0(+(x, 1)) ⇔ S(gen_S:0'5_0(x))

The following defined symbols remain to be analysed:
!EQ, minsort, appmin, remove

They will be analysed ascendingly in the following order:
minsort = appmin
remove < appmin
!EQ < remove

(10) RewriteLemmaProof (LOWER BOUND(ID) transformation)

Proved the following rewrite lemma:
!EQ(gen_S:0'5_0(n294_0), gen_S:0'5_0(+(1, n294_0))) → False, rt ∈ Ω(0)

Induction Base:
!EQ(gen_S:0'5_0(0), gen_S:0'5_0(+(1, 0))) →RΩ(0)
False

Induction Step:
!EQ(gen_S:0'5_0(+(n294_0, 1)), gen_S:0'5_0(+(1, +(n294_0, 1)))) →RΩ(0)
!EQ(gen_S:0'5_0(n294_0), gen_S:0'5_0(+(1, n294_0))) →IH
False

We have rt ∈ Ω(1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n0).

(11) Complex Obligation (BEST)

(12) Obligation:

Innermost TRS:
Rules:
minsort(Cons(x, xs)) → appmin(x, xs, Cons(x, xs))
minsort(Nil) → Nil
appmin(min, Cons(x, xs), xs') → appmin[Ite][True][Ite](<(x, min), min, Cons(x, xs), xs')
appmin(min, Nil, xs) → Cons(min, minsort(remove(min, xs)))
notEmpty(Cons(x, xs)) → True
notEmpty(Nil) → False
remove(x', Cons(x, xs)) → remove[Ite](!EQ(x', x), x', Cons(x, xs))
!EQ(S(x), S(y)) → !EQ(x, y)
!EQ(0', S(y)) → False
!EQ(S(x), 0') → False
!EQ(0', 0') → True
<(S(x), S(y)) → <(x, y)
<(0', S(y)) → True
<(x, 0') → False
remove[Ite](False, x', Cons(x, xs)) → Cons(x, remove(x', xs))
appmin[Ite][True][Ite](True, min, Cons(x, xs), xs') → appmin(x, xs, xs')
remove[Ite](True, x', Cons(x, xs)) → xs
appmin[Ite][True][Ite](False, min, Cons(x, xs), xs') → appmin(min, xs, xs')

Types:
minsort :: Cons:Nil → Cons:Nil
Cons :: S:0' → Cons:Nil → Cons:Nil
appmin :: S:0' → Cons:Nil → Cons:Nil → Cons:Nil
Nil :: Cons:Nil
appmin[Ite][True][Ite] :: True:False → S:0' → Cons:Nil → Cons:Nil → Cons:Nil
< :: S:0' → S:0' → True:False
remove :: S:0' → Cons:Nil → Cons:Nil
notEmpty :: Cons:Nil → True:False
True :: True:False
False :: True:False
remove[Ite] :: True:False → S:0' → Cons:Nil → Cons:Nil
!EQ :: S:0' → S:0' → True:False
S :: S:0' → S:0'
0' :: S:0'
hole_Cons:Nil1_0 :: Cons:Nil
hole_S:0'2_0 :: S:0'
hole_True:False3_0 :: True:False
gen_Cons:Nil4_0 :: Nat → Cons:Nil
gen_S:0'5_0 :: Nat → S:0'

Lemmas:
<(gen_S:0'5_0(n7_0), gen_S:0'5_0(+(1, n7_0))) → True, rt ∈ Ω(0)
!EQ(gen_S:0'5_0(n294_0), gen_S:0'5_0(+(1, n294_0))) → False, rt ∈ Ω(0)

Generator Equations:
gen_Cons:Nil4_0(0) ⇔ Nil
gen_Cons:Nil4_0(+(x, 1)) ⇔ Cons(0', gen_Cons:Nil4_0(x))
gen_S:0'5_0(0) ⇔ 0'
gen_S:0'5_0(+(x, 1)) ⇔ S(gen_S:0'5_0(x))

The following defined symbols remain to be analysed:
remove, minsort, appmin

They will be analysed ascendingly in the following order:
minsort = appmin
remove < appmin

(13) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)

Could not prove a rewrite lemma for the defined symbol remove.

(14) Obligation:

Innermost TRS:
Rules:
minsort(Cons(x, xs)) → appmin(x, xs, Cons(x, xs))
minsort(Nil) → Nil
appmin(min, Cons(x, xs), xs') → appmin[Ite][True][Ite](<(x, min), min, Cons(x, xs), xs')
appmin(min, Nil, xs) → Cons(min, minsort(remove(min, xs)))
notEmpty(Cons(x, xs)) → True
notEmpty(Nil) → False
remove(x', Cons(x, xs)) → remove[Ite](!EQ(x', x), x', Cons(x, xs))
!EQ(S(x), S(y)) → !EQ(x, y)
!EQ(0', S(y)) → False
!EQ(S(x), 0') → False
!EQ(0', 0') → True
<(S(x), S(y)) → <(x, y)
<(0', S(y)) → True
<(x, 0') → False
remove[Ite](False, x', Cons(x, xs)) → Cons(x, remove(x', xs))
appmin[Ite][True][Ite](True, min, Cons(x, xs), xs') → appmin(x, xs, xs')
remove[Ite](True, x', Cons(x, xs)) → xs
appmin[Ite][True][Ite](False, min, Cons(x, xs), xs') → appmin(min, xs, xs')

Types:
minsort :: Cons:Nil → Cons:Nil
Cons :: S:0' → Cons:Nil → Cons:Nil
appmin :: S:0' → Cons:Nil → Cons:Nil → Cons:Nil
Nil :: Cons:Nil
appmin[Ite][True][Ite] :: True:False → S:0' → Cons:Nil → Cons:Nil → Cons:Nil
< :: S:0' → S:0' → True:False
remove :: S:0' → Cons:Nil → Cons:Nil
notEmpty :: Cons:Nil → True:False
True :: True:False
False :: True:False
remove[Ite] :: True:False → S:0' → Cons:Nil → Cons:Nil
!EQ :: S:0' → S:0' → True:False
S :: S:0' → S:0'
0' :: S:0'
hole_Cons:Nil1_0 :: Cons:Nil
hole_S:0'2_0 :: S:0'
hole_True:False3_0 :: True:False
gen_Cons:Nil4_0 :: Nat → Cons:Nil
gen_S:0'5_0 :: Nat → S:0'

Lemmas:
<(gen_S:0'5_0(n7_0), gen_S:0'5_0(+(1, n7_0))) → True, rt ∈ Ω(0)
!EQ(gen_S:0'5_0(n294_0), gen_S:0'5_0(+(1, n294_0))) → False, rt ∈ Ω(0)

Generator Equations:
gen_Cons:Nil4_0(0) ⇔ Nil
gen_Cons:Nil4_0(+(x, 1)) ⇔ Cons(0', gen_Cons:Nil4_0(x))
gen_S:0'5_0(0) ⇔ 0'
gen_S:0'5_0(+(x, 1)) ⇔ S(gen_S:0'5_0(x))

The following defined symbols remain to be analysed:
appmin, minsort

They will be analysed ascendingly in the following order:
minsort = appmin

(15) RewriteLemmaProof (LOWER BOUND(ID) transformation)

Proved the following rewrite lemma:
appmin(gen_S:0'5_0(0), gen_Cons:Nil4_0(n1163_0), gen_Cons:Nil4_0(1)) → gen_Cons:Nil4_0(1), rt ∈ Ω(1 + n11630)

Induction Base:
appmin(gen_S:0'5_0(0), gen_Cons:Nil4_0(0), gen_Cons:Nil4_0(1)) →RΩ(1)
Cons(gen_S:0'5_0(0), minsort(remove(gen_S:0'5_0(0), gen_Cons:Nil4_0(1)))) →RΩ(1)
Cons(gen_S:0'5_0(0), minsort(remove[Ite](!EQ(gen_S:0'5_0(0), 0'), gen_S:0'5_0(0), Cons(0', gen_Cons:Nil4_0(0))))) →RΩ(0)
Cons(gen_S:0'5_0(0), minsort(remove[Ite](True, gen_S:0'5_0(0), Cons(0', gen_Cons:Nil4_0(0))))) →RΩ(0)
Cons(gen_S:0'5_0(0), minsort(gen_Cons:Nil4_0(0))) →RΩ(1)
Cons(gen_S:0'5_0(0), Nil)

Induction Step:
appmin(gen_S:0'5_0(0), gen_Cons:Nil4_0(+(n1163_0, 1)), gen_Cons:Nil4_0(1)) →RΩ(1)
appmin[Ite][True][Ite](<(0', gen_S:0'5_0(0)), gen_S:0'5_0(0), Cons(0', gen_Cons:Nil4_0(n1163_0)), gen_Cons:Nil4_0(1)) →RΩ(0)
appmin[Ite][True][Ite](False, gen_S:0'5_0(0), Cons(0', gen_Cons:Nil4_0(n1163_0)), gen_Cons:Nil4_0(1)) →RΩ(0)
appmin(gen_S:0'5_0(0), gen_Cons:Nil4_0(n1163_0), gen_Cons:Nil4_0(1)) →IH
gen_Cons:Nil4_0(1)

We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).

(16) Complex Obligation (BEST)

(17) Obligation:

Innermost TRS:
Rules:
minsort(Cons(x, xs)) → appmin(x, xs, Cons(x, xs))
minsort(Nil) → Nil
appmin(min, Cons(x, xs), xs') → appmin[Ite][True][Ite](<(x, min), min, Cons(x, xs), xs')
appmin(min, Nil, xs) → Cons(min, minsort(remove(min, xs)))
notEmpty(Cons(x, xs)) → True
notEmpty(Nil) → False
remove(x', Cons(x, xs)) → remove[Ite](!EQ(x', x), x', Cons(x, xs))
!EQ(S(x), S(y)) → !EQ(x, y)
!EQ(0', S(y)) → False
!EQ(S(x), 0') → False
!EQ(0', 0') → True
<(S(x), S(y)) → <(x, y)
<(0', S(y)) → True
<(x, 0') → False
remove[Ite](False, x', Cons(x, xs)) → Cons(x, remove(x', xs))
appmin[Ite][True][Ite](True, min, Cons(x, xs), xs') → appmin(x, xs, xs')
remove[Ite](True, x', Cons(x, xs)) → xs
appmin[Ite][True][Ite](False, min, Cons(x, xs), xs') → appmin(min, xs, xs')

Types:
minsort :: Cons:Nil → Cons:Nil
Cons :: S:0' → Cons:Nil → Cons:Nil
appmin :: S:0' → Cons:Nil → Cons:Nil → Cons:Nil
Nil :: Cons:Nil
appmin[Ite][True][Ite] :: True:False → S:0' → Cons:Nil → Cons:Nil → Cons:Nil
< :: S:0' → S:0' → True:False
remove :: S:0' → Cons:Nil → Cons:Nil
notEmpty :: Cons:Nil → True:False
True :: True:False
False :: True:False
remove[Ite] :: True:False → S:0' → Cons:Nil → Cons:Nil
!EQ :: S:0' → S:0' → True:False
S :: S:0' → S:0'
0' :: S:0'
hole_Cons:Nil1_0 :: Cons:Nil
hole_S:0'2_0 :: S:0'
hole_True:False3_0 :: True:False
gen_Cons:Nil4_0 :: Nat → Cons:Nil
gen_S:0'5_0 :: Nat → S:0'

Lemmas:
<(gen_S:0'5_0(n7_0), gen_S:0'5_0(+(1, n7_0))) → True, rt ∈ Ω(0)
!EQ(gen_S:0'5_0(n294_0), gen_S:0'5_0(+(1, n294_0))) → False, rt ∈ Ω(0)
appmin(gen_S:0'5_0(0), gen_Cons:Nil4_0(n1163_0), gen_Cons:Nil4_0(1)) → gen_Cons:Nil4_0(1), rt ∈ Ω(1 + n11630)

Generator Equations:
gen_Cons:Nil4_0(0) ⇔ Nil
gen_Cons:Nil4_0(+(x, 1)) ⇔ Cons(0', gen_Cons:Nil4_0(x))
gen_S:0'5_0(0) ⇔ 0'
gen_S:0'5_0(+(x, 1)) ⇔ S(gen_S:0'5_0(x))

The following defined symbols remain to be analysed:
minsort

They will be analysed ascendingly in the following order:
minsort = appmin

(18) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)

Could not prove a rewrite lemma for the defined symbol minsort.

(19) Obligation:

Innermost TRS:
Rules:
minsort(Cons(x, xs)) → appmin(x, xs, Cons(x, xs))
minsort(Nil) → Nil
appmin(min, Cons(x, xs), xs') → appmin[Ite][True][Ite](<(x, min), min, Cons(x, xs), xs')
appmin(min, Nil, xs) → Cons(min, minsort(remove(min, xs)))
notEmpty(Cons(x, xs)) → True
notEmpty(Nil) → False
remove(x', Cons(x, xs)) → remove[Ite](!EQ(x', x), x', Cons(x, xs))
!EQ(S(x), S(y)) → !EQ(x, y)
!EQ(0', S(y)) → False
!EQ(S(x), 0') → False
!EQ(0', 0') → True
<(S(x), S(y)) → <(x, y)
<(0', S(y)) → True
<(x, 0') → False
remove[Ite](False, x', Cons(x, xs)) → Cons(x, remove(x', xs))
appmin[Ite][True][Ite](True, min, Cons(x, xs), xs') → appmin(x, xs, xs')
remove[Ite](True, x', Cons(x, xs)) → xs
appmin[Ite][True][Ite](False, min, Cons(x, xs), xs') → appmin(min, xs, xs')

Types:
minsort :: Cons:Nil → Cons:Nil
Cons :: S:0' → Cons:Nil → Cons:Nil
appmin :: S:0' → Cons:Nil → Cons:Nil → Cons:Nil
Nil :: Cons:Nil
appmin[Ite][True][Ite] :: True:False → S:0' → Cons:Nil → Cons:Nil → Cons:Nil
< :: S:0' → S:0' → True:False
remove :: S:0' → Cons:Nil → Cons:Nil
notEmpty :: Cons:Nil → True:False
True :: True:False
False :: True:False
remove[Ite] :: True:False → S:0' → Cons:Nil → Cons:Nil
!EQ :: S:0' → S:0' → True:False
S :: S:0' → S:0'
0' :: S:0'
hole_Cons:Nil1_0 :: Cons:Nil
hole_S:0'2_0 :: S:0'
hole_True:False3_0 :: True:False
gen_Cons:Nil4_0 :: Nat → Cons:Nil
gen_S:0'5_0 :: Nat → S:0'

Lemmas:
<(gen_S:0'5_0(n7_0), gen_S:0'5_0(+(1, n7_0))) → True, rt ∈ Ω(0)
!EQ(gen_S:0'5_0(n294_0), gen_S:0'5_0(+(1, n294_0))) → False, rt ∈ Ω(0)
appmin(gen_S:0'5_0(0), gen_Cons:Nil4_0(n1163_0), gen_Cons:Nil4_0(1)) → gen_Cons:Nil4_0(1), rt ∈ Ω(1 + n11630)

Generator Equations:
gen_Cons:Nil4_0(0) ⇔ Nil
gen_Cons:Nil4_0(+(x, 1)) ⇔ Cons(0', gen_Cons:Nil4_0(x))
gen_S:0'5_0(0) ⇔ 0'
gen_S:0'5_0(+(x, 1)) ⇔ S(gen_S:0'5_0(x))

No more defined symbols left to analyse.

(20) LowerBoundsProof (EQUIVALENT transformation)

The lowerbound Ω(n1) was proven with the following lemma:
appmin(gen_S:0'5_0(0), gen_Cons:Nil4_0(n1163_0), gen_Cons:Nil4_0(1)) → gen_Cons:Nil4_0(1), rt ∈ Ω(1 + n11630)

(21) BOUNDS(n^1, INF)

(22) Obligation:

Innermost TRS:
Rules:
minsort(Cons(x, xs)) → appmin(x, xs, Cons(x, xs))
minsort(Nil) → Nil
appmin(min, Cons(x, xs), xs') → appmin[Ite][True][Ite](<(x, min), min, Cons(x, xs), xs')
appmin(min, Nil, xs) → Cons(min, minsort(remove(min, xs)))
notEmpty(Cons(x, xs)) → True
notEmpty(Nil) → False
remove(x', Cons(x, xs)) → remove[Ite](!EQ(x', x), x', Cons(x, xs))
!EQ(S(x), S(y)) → !EQ(x, y)
!EQ(0', S(y)) → False
!EQ(S(x), 0') → False
!EQ(0', 0') → True
<(S(x), S(y)) → <(x, y)
<(0', S(y)) → True
<(x, 0') → False
remove[Ite](False, x', Cons(x, xs)) → Cons(x, remove(x', xs))
appmin[Ite][True][Ite](True, min, Cons(x, xs), xs') → appmin(x, xs, xs')
remove[Ite](True, x', Cons(x, xs)) → xs
appmin[Ite][True][Ite](False, min, Cons(x, xs), xs') → appmin(min, xs, xs')

Types:
minsort :: Cons:Nil → Cons:Nil
Cons :: S:0' → Cons:Nil → Cons:Nil
appmin :: S:0' → Cons:Nil → Cons:Nil → Cons:Nil
Nil :: Cons:Nil
appmin[Ite][True][Ite] :: True:False → S:0' → Cons:Nil → Cons:Nil → Cons:Nil
< :: S:0' → S:0' → True:False
remove :: S:0' → Cons:Nil → Cons:Nil
notEmpty :: Cons:Nil → True:False
True :: True:False
False :: True:False
remove[Ite] :: True:False → S:0' → Cons:Nil → Cons:Nil
!EQ :: S:0' → S:0' → True:False
S :: S:0' → S:0'
0' :: S:0'
hole_Cons:Nil1_0 :: Cons:Nil
hole_S:0'2_0 :: S:0'
hole_True:False3_0 :: True:False
gen_Cons:Nil4_0 :: Nat → Cons:Nil
gen_S:0'5_0 :: Nat → S:0'

Lemmas:
<(gen_S:0'5_0(n7_0), gen_S:0'5_0(+(1, n7_0))) → True, rt ∈ Ω(0)
!EQ(gen_S:0'5_0(n294_0), gen_S:0'5_0(+(1, n294_0))) → False, rt ∈ Ω(0)
appmin(gen_S:0'5_0(0), gen_Cons:Nil4_0(n1163_0), gen_Cons:Nil4_0(1)) → gen_Cons:Nil4_0(1), rt ∈ Ω(1 + n11630)

Generator Equations:
gen_Cons:Nil4_0(0) ⇔ Nil
gen_Cons:Nil4_0(+(x, 1)) ⇔ Cons(0', gen_Cons:Nil4_0(x))
gen_S:0'5_0(0) ⇔ 0'
gen_S:0'5_0(+(x, 1)) ⇔ S(gen_S:0'5_0(x))

No more defined symbols left to analyse.

(23) LowerBoundsProof (EQUIVALENT transformation)

The lowerbound Ω(n1) was proven with the following lemma:
appmin(gen_S:0'5_0(0), gen_Cons:Nil4_0(n1163_0), gen_Cons:Nil4_0(1)) → gen_Cons:Nil4_0(1), rt ∈ Ω(1 + n11630)

(24) BOUNDS(n^1, INF)

(25) Obligation:

Innermost TRS:
Rules:
minsort(Cons(x, xs)) → appmin(x, xs, Cons(x, xs))
minsort(Nil) → Nil
appmin(min, Cons(x, xs), xs') → appmin[Ite][True][Ite](<(x, min), min, Cons(x, xs), xs')
appmin(min, Nil, xs) → Cons(min, minsort(remove(min, xs)))
notEmpty(Cons(x, xs)) → True
notEmpty(Nil) → False
remove(x', Cons(x, xs)) → remove[Ite](!EQ(x', x), x', Cons(x, xs))
!EQ(S(x), S(y)) → !EQ(x, y)
!EQ(0', S(y)) → False
!EQ(S(x), 0') → False
!EQ(0', 0') → True
<(S(x), S(y)) → <(x, y)
<(0', S(y)) → True
<(x, 0') → False
remove[Ite](False, x', Cons(x, xs)) → Cons(x, remove(x', xs))
appmin[Ite][True][Ite](True, min, Cons(x, xs), xs') → appmin(x, xs, xs')
remove[Ite](True, x', Cons(x, xs)) → xs
appmin[Ite][True][Ite](False, min, Cons(x, xs), xs') → appmin(min, xs, xs')

Types:
minsort :: Cons:Nil → Cons:Nil
Cons :: S:0' → Cons:Nil → Cons:Nil
appmin :: S:0' → Cons:Nil → Cons:Nil → Cons:Nil
Nil :: Cons:Nil
appmin[Ite][True][Ite] :: True:False → S:0' → Cons:Nil → Cons:Nil → Cons:Nil
< :: S:0' → S:0' → True:False
remove :: S:0' → Cons:Nil → Cons:Nil
notEmpty :: Cons:Nil → True:False
True :: True:False
False :: True:False
remove[Ite] :: True:False → S:0' → Cons:Nil → Cons:Nil
!EQ :: S:0' → S:0' → True:False
S :: S:0' → S:0'
0' :: S:0'
hole_Cons:Nil1_0 :: Cons:Nil
hole_S:0'2_0 :: S:0'
hole_True:False3_0 :: True:False
gen_Cons:Nil4_0 :: Nat → Cons:Nil
gen_S:0'5_0 :: Nat → S:0'

Lemmas:
<(gen_S:0'5_0(n7_0), gen_S:0'5_0(+(1, n7_0))) → True, rt ∈ Ω(0)
!EQ(gen_S:0'5_0(n294_0), gen_S:0'5_0(+(1, n294_0))) → False, rt ∈ Ω(0)

Generator Equations:
gen_Cons:Nil4_0(0) ⇔ Nil
gen_Cons:Nil4_0(+(x, 1)) ⇔ Cons(0', gen_Cons:Nil4_0(x))
gen_S:0'5_0(0) ⇔ 0'
gen_S:0'5_0(+(x, 1)) ⇔ S(gen_S:0'5_0(x))

No more defined symbols left to analyse.

(26) LowerBoundsProof (EQUIVALENT transformation)

The lowerbound Ω(1) was proven with the following lemma:
<(gen_S:0'5_0(n7_0), gen_S:0'5_0(+(1, n7_0))) → True, rt ∈ Ω(0)

(27) BOUNDS(1, INF)

(28) Obligation:

Innermost TRS:
Rules:
minsort(Cons(x, xs)) → appmin(x, xs, Cons(x, xs))
minsort(Nil) → Nil
appmin(min, Cons(x, xs), xs') → appmin[Ite][True][Ite](<(x, min), min, Cons(x, xs), xs')
appmin(min, Nil, xs) → Cons(min, minsort(remove(min, xs)))
notEmpty(Cons(x, xs)) → True
notEmpty(Nil) → False
remove(x', Cons(x, xs)) → remove[Ite](!EQ(x', x), x', Cons(x, xs))
!EQ(S(x), S(y)) → !EQ(x, y)
!EQ(0', S(y)) → False
!EQ(S(x), 0') → False
!EQ(0', 0') → True
<(S(x), S(y)) → <(x, y)
<(0', S(y)) → True
<(x, 0') → False
remove[Ite](False, x', Cons(x, xs)) → Cons(x, remove(x', xs))
appmin[Ite][True][Ite](True, min, Cons(x, xs), xs') → appmin(x, xs, xs')
remove[Ite](True, x', Cons(x, xs)) → xs
appmin[Ite][True][Ite](False, min, Cons(x, xs), xs') → appmin(min, xs, xs')

Types:
minsort :: Cons:Nil → Cons:Nil
Cons :: S:0' → Cons:Nil → Cons:Nil
appmin :: S:0' → Cons:Nil → Cons:Nil → Cons:Nil
Nil :: Cons:Nil
appmin[Ite][True][Ite] :: True:False → S:0' → Cons:Nil → Cons:Nil → Cons:Nil
< :: S:0' → S:0' → True:False
remove :: S:0' → Cons:Nil → Cons:Nil
notEmpty :: Cons:Nil → True:False
True :: True:False
False :: True:False
remove[Ite] :: True:False → S:0' → Cons:Nil → Cons:Nil
!EQ :: S:0' → S:0' → True:False
S :: S:0' → S:0'
0' :: S:0'
hole_Cons:Nil1_0 :: Cons:Nil
hole_S:0'2_0 :: S:0'
hole_True:False3_0 :: True:False
gen_Cons:Nil4_0 :: Nat → Cons:Nil
gen_S:0'5_0 :: Nat → S:0'

Lemmas:
<(gen_S:0'5_0(n7_0), gen_S:0'5_0(+(1, n7_0))) → True, rt ∈ Ω(0)

Generator Equations:
gen_Cons:Nil4_0(0) ⇔ Nil
gen_Cons:Nil4_0(+(x, 1)) ⇔ Cons(0', gen_Cons:Nil4_0(x))
gen_S:0'5_0(0) ⇔ 0'
gen_S:0'5_0(+(x, 1)) ⇔ S(gen_S:0'5_0(x))

No more defined symbols left to analyse.

(29) LowerBoundsProof (EQUIVALENT transformation)

The lowerbound Ω(1) was proven with the following lemma:
<(gen_S:0'5_0(n7_0), gen_S:0'5_0(+(1, n7_0))) → True, rt ∈ Ω(0)

(30) BOUNDS(1, INF)